Designing integrated circuits is a very complex and time consuming process. Engineers spend large amounts of time configuring the integrated circuit's architecture so it functions properly for its intended purpose. While this time, effort, and expense are acceptable for application specific integrated circuits (ASIC) that will be produced in large quantities, at times designing integrated circuits for a particular purpose is not practical or cost efficient. For some applications, as a result, accommodating the desired functions results in a complex and inefficient solution for the customer.
Integrated circuits for control and automation applications, for example, are very complex because they are capable of processing a large number of functions. Such integrated circuits are used extensively in the communications, industrial automation and medical device fields. Integrated circuits for these applications often implement large numbers of ports to support multiple channel analog-to-digital converters (ADC), multiple channel digital-to-analog converters (DAC), general purpose input/output devices (GPIO), comparators, temperature sensors, multiplexers, relays, or the like. As a result, these integrated circuits can become quite large. Consequently, many implementations use multiple integrated circuits instead of a single integrated circuit wherein each integrated circuit performs a limited set of functions.